/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is Forte for Java, Community Edition. The Initial
* Developer of the Original Code is Sun Microsystems, Inc. Portions
* Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.form.compat2.layouts.support;
import org.netbeans.modules.form.compat2.layouts.*;
import org.netbeans.modules.form.*;
/** A design-time support layout.
*
* @author Ian Formanek
*/
public class SingleDesignSupportLayout extends DesignSupportLayout {
/** A JDK 1.1 serial version UID */
static final long serialVersionUID = -4345262182700502754L;
public SingleDesignSupportLayout () {
this (true);
}
public SingleDesignSupportLayout (boolean generateComponentAddCode) {
this.generateComponentAddCode = generateComponentAddCode;
}
/** Assigns this DesignLayout to the specified RADVisualContainer.
* @param cont The RADVisualContainer that represents a container that will be
* managed by this layout or null as a notification that this layout
* is not a designLayout for its current container anymore
*/
public void setRADContainer (RADVisualContainer cont) {
super.setRADContainer(cont);
singleCD = new SingleSupportConstraintsDescription();
}
/** Returns a constraint to be used for adding a component to the
* specified position (e.g. in BorderLayout, the "North", "South", ...
* will be determined by the position in the container).
* The default implementation just returns the default constraints.
* A special constraints object will be returned for layouts that
* wish to set the position&size of the components rather than add
* with constraints.
* @param position The position within the container for which the
* constraints should be returned.
*/
public DesignLayout.ConstraintsDescription getConstraintsDescription(java.awt.Point position) {
return singleCD;
}
protected boolean canAdd () {
return true;
}
/** Adds specified component to this layout. The constraints for the component
* are acquired from the component by method getConstraints().
* If the getConstraints() returns null, a new constraints should be
* synthesized, and set in the component via setConstraints().
* @param node The component to add
* @see RADVisualComponent#getConstraints
* @see RADVisualComponent#setConstraints
* @see #removeComponent
*/
public void addComponent (RADVisualComponent node) {
if (canAdd ())
getContainer().add(getFormManager ().getVisualRepresentation (node));
}
/** Returns a class of the layout that this DesignLayout represents (e.g.
* returns FlowLayout.class from DesignFlowLayout).
* @return a class of the layout represented by this DesignLayout or null if the
* design layout does not represent a "real" layout (e.g. support layouts for JTabbedPane, ...)
*/
public Class getLayoutClass() {
return null;
}
// -----------------------------------------------------------------------------
// Code generation
/** Generates the code for initialization of this layout, e.g. panel1.setLayout (new BorderLayout ());.
* @param cont The container that is managed by this layout
* @return the init code for the layout or null if it should not be generated
*/
public String generateInitCode(RADVisualContainer cont) {
return null;
}
/** Generates the code for adding specified component to this layout.
* @param comp The component to be added to this layout
* @param cont The container that is managed by this layout
*/
public String generateComponentCode(RADVisualContainer cont, RADVisualComponent comp) {
if (generateComponentAddCode) {
StringBuffer buf = new StringBuffer();
buf.append(createContainerGenName(cont));
buf.append("add ("); // NOI18N
buf.append(comp.getName());
buf.append(");\n"); // NOI18N
return buf.toString();
} else
return ""; // no code generation here // NOI18N
}
// -----------------------------------------------------------------------------
// constraints innerclass
/** The ConstraintsDescription class encapsulates constraints data and
* operations on a constraints that will be used for adding components
* to the layout.
*/
public static class SingleSupportConstraintsDescription extends DesignLayout.ConstraintsDescription {
/** A JDK 1.1 serial version UID */
static final long serialVersionUID = -3865967802602855972L;
public String getConstraintsString() {
return ""; // NOI18N
}
public Object getConstraintsObject() {
return null;
}
}
// -----------------------------------------------------------------------------
// private area
transient private SingleSupportConstraintsDescription singleCD;
private boolean generateComponentAddCode;
}
/*
* Log
* 9 Gandalf 1.8 1/13/00 Ian Formanek NOI18N #2
* 8 Gandalf 1.7 1/12/00 Ian Formanek NOI18N
* 7 Gandalf 1.6 10/23/99 Ian Formanek NO SEMANTIC CHANGE - Sun
* Microsystems Copyright in File Comment
* 6 Gandalf 1.5 9/24/99 Ian Formanek generateInitCode method
* clarified
* 5 Gandalf 1.4 7/31/99 Ian Formanek Cleaned up comments
* 4 Gandalf 1.3 6/27/99 Ian Formanek Removed indent parameter
* from code generation methods
* 3 Gandalf 1.2 5/11/99 Ian Formanek Build 318 version
* 2 Gandalf 1.1 5/10/99 Ian Formanek
* 1 Gandalf 1.0 3/29/99 Ian Formanek
* $
*/